package 面试今典150;

public class 今典4_80删除有序数组中的重复项 {
    public int removeDuplicates(int[] nums) {
        return process(nums,2);
    }
    public int process(int[] nums,int k){
        int index = 0;
        /*
        思路：
            保留k个重复的元素
            index < k :直接保留前k个元素
            index - k :最大可重复区间的元素
                        如果index - k 的位置与当前遍历的位置不重复，那么就将当前不重复的数字，写在index位置，index++；
                        比如：
                        0 0 0 1
                        k = 2 ,index = 2 在下标为2的位置
                        index - k => 2-2 = 0,只要当前遍历位置与0位置的不重复，就可以将x赋值给index =》 0 0 1 1
                        此时index = 3，整个数组都遍历结束了，返回index = 3，也就是前三个数，0 0 1，结果正确。
         */
        for(int x :nums){
            if (index < k || nums[index-k] != x){
                nums[index++] = x;
            }
        }
        return index;
    }
}
